$(function () {
    //保存最近一次点击的边界问题
    window.lastBoundQuestion = '';

    //1.初始化边界问题Table
    var boundaryTable = new BoundaryInit();
    boundaryTable.Init();

    //2.初始化边界问题Table的操作Button的点击事件
    var boundaryButton = new BoundaryButtonInit();
    boundaryButton.Init();

    //初始化推荐用户问题Table
    var recommendTable = new RecommendInit();
    recommendTable.Init();

    //初始化边界问题操作Button的点击事件
    var recommendButton = new RecommendButtonInit();
    recommendButton.Init();

    //初始化扩写问题Table
    var resultTable = new ResultInit();
    resultTable.Init();

    //初始化扩写问题操作Button的点击事件
    var resultButton = new ResultButtonInit();
    resultButton.Init();

    //修改表宽度
    var tables = document.getElementsByClassName('bootstrap-table');
    tables[0].style.width = '380px';
    tables[1].style.width = '420px';
    tables[1].style.marginLeft = '10px';
    tables[2].style.marginLeft = '10px';
    tables[2].style.width = '550px';


    //选择项目Button事件
    $('#project_conform').click(function () {
        var project_name = $('#editable-select').val();
        $.ajax({
            type: 'GET',
            url: '/getquestion',
            cache: false,
            data: {
                appid: project_name,
                type: 'bq'
            },
            error: function () {
            },
            success: function (res) {
                if (res.status == 'true') {
                    $('#tb_boundary').bootstrapTable('load', res.data);
                }
            }
        });
    });
});


var BoundaryInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#tb_boundary').bootstrapTable({
            //url: '/getdata', //请求后台的URL（*）
            //method: 'get', //请求方式（*）
            data: [{'boundQ': ''}],
            //toolbar: '#toolbar', //工具按钮用哪个容器
            striped: false, //是否显示行间隔色
            cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true, //是否显示分页（*）
            sortable: true, //是否启用排序
            sortOrder: "asc", //排序方式
            //queryParams: oTableInit.queryParams,//传递参数（*）
            //sidePagination: "client", //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1, //初始化加载第一页，默认第一页
            pageSize: 30, //每页的记录行数（*）
            pageList: [30, 50, 100, 150], //可供选择的每页的行数（*）
            search: true, //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: false,  //false -->模糊搜索
            showColumns: true, //是否显示所有的列
            //showRefresh: true, //是否显示刷新按钮
            //showToggle:true, //是否显示详细视图和列表视图的切换按钮
            //minimumCountColumns: 2, //最少允许的列数
            clickToSelect: false, //是否启用点击选中行
            height: 580, //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID", //每一行的唯一标识，一般为主键列
            cardView: false, //是否显示详细视图
            detailView: false, //是否显示父子表
            columns: [{
                field: 'number',
                title: '序号',
                align: 'center',
                width: 20,
                formatter: function (value, row, index) {
                    return index + 1;
                }
            },
                {
                    field: 'boundQ',
                    title: '边界问题',
                    sortable: true
                }],
        });
    };

    return oTableInit;
};

var RecommendInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#tb_recommend').bootstrapTable({
            //url: '/getdata', //请求后台的URL（*）
            //method: 'get', //请求方式（*）
            data: [{'recommendQ': ''}],
            toolbar: '#toolbar1', //工具按钮用哪个容器
            striped: false, //是否显示行间隔色
            cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true, //是否显示分页（*）
            sortable: true, //是否启用排序
            sortOrder: "asc", //排序方式
            //queryParams: oTableInit.queryParams,//传递参数（*）
            //sidePagination: "client", //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1, //初始化加载第一页，默认第一页
            pageSize: 50, //每页的记录行数（*）
            pageList: [50, 100, 150, 200], //可供选择的每页的行数（*）
            search: true, //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: false,  //false -->模糊搜索
            //showColumns: true, //是否显示所有的列
            //showRefresh: true, //是否显示刷新按钮
            //showToggle:true, //是否显示详细视图和列表视图的切换按钮
            //minimumCountColumns: 2, //最少允许的列数
            clickToSelect: true, //是否启用点击选中行
            height: 580, //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID", //每一行的唯一标识，一般为主键列
            cardView: false, //是否显示详细视图
            detailView: false, //是否显示父子表
            columns: [
                {
                    checkbox: true
                },
                {
                    field: 'number',
                    title: '序号',
                    align: 'center',
                    width: 20,
                    formatter: function (value, row, index) {
                        return index + 1;
                    }
                },
                {
                    field: 'recommendQ',
                    title: '推荐用户问',
                    sortable: true,
                    editable: true
                }
            ]
        });
    };

    // function operateFormatter(value, row, index) {
    //     return [row.editQ,
    //         '<button type="button" class="RoleOfA btn btn-default  btn-sm">标注</button>',
    //         '<button type="button" class="RoleOfB btn btn-default  btn-sm" style="margin-left: 5px">删除</button>'
    //     ].join('');
    // }
    //
    // window.operateEvents = {
    //     'click .RoleOfA': function (e, value, row, index) {
    //         alert('A');
    //     },
    //     'click .RoleOfB': function (e, value, row, index) {
    //         alert('B');
    //     },
    // };

    return oTableInit;
};

var ResultInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#tb_result').bootstrapTable({
            //url: '/getdata', //请求后台的URL（*）
            //method: 'get', //请求方式（*）
            data: [{'recommendQ': '', 'boundQ': ''}],
            toolbar: '#toolbar2', //工具按钮用哪个容器
            striped: false, //是否显示行间隔色
            cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true, //是否显示分页（*）
            sortable: true, //是否启用排序
            sortOrder: "asc", //排序方式
            //queryParams: oTableInit.queryParams,//传递参数（*）
            //sidePagination: "client", //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1, //初始化加载第一页，默认第一页
            pageSize: 1000, //每页的记录行数（*）
            pageList: [1000, 1500], //可供选择的每页的行数（*）
            search: true, //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: false,  //false -->模糊搜索
            showColumns: true, //是否显示所有的列
            //showRefresh: true, //是否显示刷新按钮
            //showToggle:true, //是否显示详细视图和列表视图的切换按钮
            //minimumCountColumns: 2, //最少允许的列数
            clickToSelect: false, //是否启用点击选中行
            height: 580, //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID", //每一行的唯一标识，一般为主键列
            cardView: false, //是否显示详细视图
            detailView: false, //是否显示父子表
            columns: [
                {
                    checkbox: true,
                },
                {
                    field: 'number',
                    title: '序号',
                    align: 'center',
                    width: 20
                },
                {
                    field: 'recommendQ',
                    title: '推荐问题',
                    width: 240,
                    sortable: true
                },
                {
                    field: 'boundQ',
                    title: '边界问题',
                    sortable: true
                }]
        });
    };

//        function operateFormatter(value, row, index) {
//            return [row.editQ,
//                '<button type="button" class="RoleOfA btn btn-default  btn-sm">A权限</button>',
//            ].join('');
//        }
    return oTableInit;
};

//边界问题table按钮初始化
var BoundaryButtonInit = function () {
    var oInit = new Object();
    var postdata = {};
    oInit.Init = function () {
        var table = $('#tb_boundary');
        table.on('click-row.bs.table', function (e, row, element) {
            //bootstrap table支持5中表格的行背景色，分别是'active', 'success', 'info', 'warning', 'danger'这五种
            $('.success').removeClass('success');//去除之前选中的行的，选中样式
            $(element).addClass('success');//添加当前选中的 success样式用于区别

            //检查是否有需要导入的数据
            if ($('#tb_result').bootstrapTable('getData').length != 0 &&
                $('#tb_result').bootstrapTable('getData')[0].boundQ != '' && $('#tb_result').bootstrapTable('getData')[0].recommendQ != '') {
                toastr.warning('有未导入的数据');
                return;
            }

            //获取项目名称
            var project_name = $('#editable-select').val();
            $.ajax({
                type: 'GET',
                url: '/search',
                async: false,
                data: {
                    question: row.boundQ,
                    project: project_name
                },
                error: function () {
                },
                success: function (res) {
                    var status = res.status;
                    if (status == 'true') {
                        var data = res.data,
                            recommendData = new Array();
                        for (var x in data) {
                            recommendData.push({'recommendQ': data[x]});
                        }
                        //console.log(data);
                        $('#tb_recommend').bootstrapTable('load', recommendData);
                    } else {
                        $('#tb_recommend').bootstrapTable('removeAll');
                        $('#tb_recommend').bootstrapTable('insertRow', {
                            index: 0,
                            row: {
                                recommend: '',
                            }
                        })
                    }
                }
            });

            window.lastBoundQuestion = row.boundQ;
            //更新table3的表头
            setTimeout(function () {
                var containers = document.getElementsByClassName('fixed-table-container');
                var element = containers[1].getElementsByClassName('th-inner sortable');
                element[0].innerHTML = row.boundQ;
            }, 100)
        });
    };

    return oInit;
};

var RecommendButtonInit = function () {
    var oInit = new Object();
    var postdata = {};
    oInit.Init = function () {
        //初始化页面上面的按钮事件
        var table = $('#tb_recommend'),
            addButton = $('#btn_add1'),
            remove = $('#btn_delete1'),
            selections = [];
        table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
            remove.prop('disabled', !table.bootstrapTable('getSelections').length);
            selections = getIdSelections();
        });

        table.on('click-row.bs.table', function (e, row, element) {
            //bootstrap table支持5中表格的行背景色，分别是'active', 'success', 'info', 'warning', 'danger'这五种
            $('.success').removeClass('success');//去除之前选中的行的，选中样式
            $(element).addClass('success');//添加当前选中的 success样式用于区别
        });

        //批量删除按钮事件
        remove.click(function () {
            var ids = getIdSelections();
            table.bootstrapTable('remove', {
                field: 'recommendQ',
                values: ids
            });
            remove.prop('disabled', true);
        });

        //批量标注按钮事件
        addButton.click(function () {
            var datas = getAllDatas();
            $('#tb_result').bootstrapTable('remove', {field: 'recommendQ', values: ['']});
            for (var i in datas) {
                $('#tb_result').bootstrapTable('insertRow', {
                    'index': 0,
                    row: {'number': datas[i].number, 'recommendQ': datas[i].recommendQ, 'boundQ': window.lastBoundQuestion}
                });
            }

            var ids = getIdSelections();
            table.bootstrapTable('remove', {
                field: 'recommendQ',
                values: ids
            });
            remove.prop('disabled', true);
        });

        function getIdSelections() {
            return $.map(table.bootstrapTable('getSelections'), function (row) {
                return row.recommendQ;
            });
        }

        function getAllDatas() {
            return $.map(table.bootstrapTable('getSelections'), function (row) {
                return row;
            });
        }
    };

    return oInit;
};

var ResultButtonInit = function () {
    var oInit = new Object();
    var postdata = {};
    var importButton = $('#btn_import');
    oInit.Init = function () {
        //初始化页面上面的按钮事件
        var table = $('#tb_result'),
            remove = $('#btn_delete2'),
            imoprtButton = $('#btn_import'),
            selections = [];
        table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
            remove.prop('disabled', !table.bootstrapTable('getSelections').length);
            selections = getIdSelections();
        });

        table.on('click-row.bs.table', function (e, row, element) {
            //bootstrap table支持5中表格的行背景色，分别是'active', 'success', 'info', 'warning', 'danger'这五种
            $('.success').removeClass('success');//去除之前选中的行的，选中样式
            $(element).addClass('success');//添加当前选中的 success样式用于区别
        });

        //批量删除按钮事件
        remove.click(function () {
            var ids = getIdSelections();
            table.bootstrapTable('remove', {
                field: 'recommendQ',
                values: ids
            });
            remove.prop('disabled', true);

            for (var i = 0; i < ids.length; i++) {
                $('#tb_recommend').bootstrapTable('insertRow', {
                    index: 0,
                    row: {
                        recommendQ: ids[i]
                    }
                });
            }
        
        });

        //批量导入按钮事件
        imoprtButton.click(function () {
            if (!table.bootstrapTable('getSelections').length) {
                toastr.warning('请选择需要导入的数据');
            }
            table.bootstrapTable('removeAll');
            table.bootstrapTable('insertRow', {index: 0, row: {'recommendQ': '', 'boundQ': ''}})
        });

        function getIdSelections() {
            return $.map(table.bootstrapTable('getSelections'), function (row) {
                return row.recommendQ;
            });
        }
    };

    return oInit;
};